import time
from functools import wraps

from utils.date_tuils import get_yesterday_time_range


def timeit(name=None):
    """
    装饰器：统计函数执行时间，支持自定义任务/函数名称
    :param name: 自定义名称，可选
    """

    def decorator(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            start, end = get_yesterday_time_range()
            func_name = name if name else func.__name__
            print(f'[同步开始] [{func_name:^25}] {start} 到 {end}')
            start_time = time.time()
            result = func(*args, **kwargs)
            end_time = time.time()
            elapsed_time = end_time - start_time
            print(f"[同步完成] [{func_name:^25}] {start} 到 {end} ,执行耗时: {convert_seconds_to_minutes_if_needed(round(elapsed_time, 2))}")
            return result

        return wrapper

    return decorator


def convert_seconds_to_minutes_if_needed(seconds, threshold_minutes=1):
    """
    如果秒数超过指定的分钟阈值，则转换为分钟，否则返回原秒数。

    参数:
        seconds (int): 时间（以秒为单位）
        threshold_minutes (int): 转换为分钟的阈值（默认为1分钟）

    返回:
        str: 格式如 "X 秒" 或 "X 分钟"
    """
    threshold_seconds = threshold_minutes * 60

    if seconds >= threshold_seconds:
        minutes = round(seconds / 60, 2)
        return f"{minutes} 分钟"
    else:
        return f"{seconds} 秒"


if __name__ == '__main__':
    # 示例用法
    print(convert_seconds_to_minutes_if_needed(30))  # 输出: 30 秒
    print(convert_seconds_to_minutes_if_needed(90))  # 输出: 1.5 分钟
    print(convert_seconds_to_minutes_if_needed(180))  # 输出: 3 分钟
